<script>
    //   js如果我们列出所有 10 以下且是 3 或 5 的倍数的自然数，我们会得到 3、5、6 和 9。这些倍数的总和是 23。
    // function sumOfMultiples(num) {
    //     if (num < 0) {
    //         return 0;
    //     }
    //     let sum = 0;
    //     for (let i = 1; i < num; i++) {
    //         if (i % 3 === 0 || i % 5 === 0) {
    //             sum += i;
    //         }
    //     }
    //     return sum;
    // }
    // console.log(sumOfMultiples(10));

    // -------------------------------------------
    // 将哈希转换为数组。不多不少，也不少少。
    //     {name: 'Jeremy', age: 24, role: 'Software Engineer'}
    //     应该转换成
    // [["age", 24], ["name", "Jeremy"], ["role", "Software Engineer"]]

    // const obj = { name: 'Jeremy', age: 24, role: 'Software Engineer' }
    // let arr = []
    // Object.keys(obj).forEach(key => {
    //     arr.push([key, obj[key]])
    // })
    // console.log(arr);


    // -------------------------------------------
    // 对于 inputArray = [1, 2, 3, 4, 5, 6, 7, 8]，输出应为 186。如果是奇数就加,如果是偶数就乘

    // // 我们有[1, 2, 3, 4, 5, 6, 7, 8] -> [3, 7, 11, 15] -> [21, 165] -> [186]，所以答案是 186。
    // function processArray(inputArray) {
    //     let result = 1;

    //     for (let i = 0; i < inputArray.length; i++) {
    //         if (inputArray[i] % 2 === 0) { // 如果是偶数
    //             result *= inputArray[i];
    //         } else { // 如果是奇数
    //             result += inputArray[i];
    //         }
    //     }

    //     return result;
    // }

    // // 测试函数
    // console.log(processArray([1, 2, 3, 4, 5, 6, 7, 8])); // 输出应为 186


    // ----------------------------------------------------

    //js生成uuid
    //    function geneUUid(){
    //     var d = new Date().getTime();
    //     if (window.performance && typeof window.performance.now === "function") {
    //         d += performance.now();
    //     }
    //     var uuid = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    //         var r = (d + Math.random() * 16) % 16 | 0;
    //         d = Math.floor(d / 16);
    //         return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    //     });
    //     return uuid;
    // }
    // console.log(geneUUid());
    // console.log(window.performance.now());

    // ----------------------------------------------------

    // 1、有一个三位数，被4除余2，被7除余3,被9除余5，将满足条件的数据存放在一个数组中并输出。

    // function threeNum(params) {
    //     let arr = []
    //     for (let i = 0; i < 1000; i++) {
    //         if (i % 4 === 2 && i % 7 === 3 && i % 9 === 5) {
    //             arr.push(i)
    //         }
    //     }
    //     return arr
    // }
    // console.log(threeNum());


    // ----------------------------------------------------

    // 定义一个数组var arr =[11,22,0,0,0,33,44,55,0],要去除数组中的0,并生成一个新的数组。
    // var arr = [11, 22, 0, 0, 0, 33, 44, 55, 0]
    // const r= arr.filter(item => {
    //     return item != 0
    // })
    // for (var i = 0; i < arr.length; i++) {
    //   if (arr[i] == 0) {
    //     arr.splice(i, 1);
    //     i--;
    //   }
    // }
    // console.log(arr);
    // console.log(r);

    // ----------------------------------------------------

    // 封装一个函数，返回一个数组中偶数的个数
    // var arr = [11, 22, 0, 0, 0, 33, 44, 55, 0]

    // function evenNumber(valueArr) {
    //     const r = valueArr.filter(item => {
    //         return item % 2 === 0
    //     })
    //     return r.length
    // }
    // console.log(evenNumber(arr));
    // 旧方法
    //     function getCount(arr) {
    //      var n = 0;
    //      for (var i = 0; i < arr.length; i++) {
    //        if (arr[i] % 2 == 0) {
    //          n++;
    //        }
    //      }
    //      return n;
    //    }
    //    var arr = [22, 33, 44, 5, 66, 7, 8]
    //    var n = getCount(arr);
    //    console.log(n);

    // ----------------------------------------------------
    // 找字符串里面的最长的单词,例 good morning boy! 最长单词是morning

    // let str = 'good morning boy'
    // function getLongestWord(str) {
    //     let arr = str.split(' ')
    //     console.log(arr);
    //     let max = 0
    //     let longestWord = ''
    //     for (let i = 0; i < arr.length; i++) {
    //         if (arr[i].length > max) {
    //             max = arr[i].length
    //             longestWord = arr[i]
    //         }
    //     }
    //     return longestWord
    // }
    // console.log(getLongestWord(str));

    // ----------------------------------------------------
    // 随机生成10个100以内的整数，然后将奇数和偶数分别存入到二个不同的数组中，并输出。

    // function Random(params) {
    //     let arr = []
    //     let arr1 = []
    //     let arr2 = []
    //     for (let i = 0; i < 10; i++) {
    //         let num = Math.floor(Math.random() * (100 - 0 + 1)) + 0
    //         arr.push(num)
    //         if (num % 2 === 0) {
    //             arr1.push(num)
    //         } else if (num % 3 === 0) {
    //             arr2.push(num)
    //         }
    //     }
    //     return {arr,arr1,arr2}
    // }
    // console.log(Random());

    // ----------------------------------------------------


    // 一组蔬菜英文(Potato、Carrot、Onion、Aubergine、Celery、White Cabbage、 Cauliflower) 输出含有“o”或者含有“f”的单词
    // let arr = ["Potato", "Carrot", "Onion", "Aubergine", "Celery", "White Cabbage", "Cauliflower"]

    // function arrF(arr) {
    //     const r = arr.filter(item => {
    //         return item.indexOf("o") !== -1 || item.indexOf("f") !== -1
    //     })
    //     return r
    // }
    // for (var i = 0; i < arr.length; i++) {
    //     if (arr[i].includes("o") || arr[i].includes("f")) {
    //         console.log(arr[i]);
    //     }
    // }
    // console.log(arrF(arr));



    // ----------------------------------------------------

    // 数组中的每一位数字都增加50%，并返回一个新数组 var arr =[10,20,30];

    // var arr = [10, 20, 30];
    // function namef(params) {
    //    return  params.map((item) => {
    //            return item * 1.5
    //     })
    // }
    //  console.log(namef(arr));  


    // ----------------------------------------------------
    //计算10的阶乘
    // function factorial(n) {
    //     let r = 1;
    //     for (let i = 1; i <= n; i++) {
    //         r*= i;
    //     }
    //     return r;
    // }
    // console.log(factorial(10));

    // 随机生成4位验证码,大写字母小写字母及数字可供随机选择(比如:nG3p)
    // let str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789'
    // let r = [];
    // for (let i = 0; i < 4; i++) {
    //     let num = Math.floor(Math.random() * (str.length - 0 + 1)) + 1
    //     r.push(str[(num)])
    // }
    // console.log(r.join(''));


    // 完成函数 createModule，调用之后满足如下要求：

    // 1、返回一个对象

    // 2、对象的 greeting 属性值等于 str1， name 属性值等于 str2

    // 3、对象存在一个 sayIt 方法，该方法返回的字符串为 greeting属性值 + ', ' + name属性值
    // function createModule(str1, str2) {
    //     let r = {
    //         greeting: str1,
    //         name: str2,
    //         sayIt: function () {
    //             return this.greeting + ',' + this.name;
    //         }
    //     }
    //     return r
    // }
    // const myModule = createModule("Hello", "Alice");
    // console.log(myModule.sayIt());

    // 用*号代替字母C的图案。
    // function name(params) {
    //     params= params.replace(/c/g, '*')
    //    console.log(params);

    // }
    // console.log( name('都选cuidchcidg'));

    // 利用条件运算符的嵌套来完成此题:
    // 学习成绩>=90分的同学用A表示，60-89 分之间的用B表示，6 0分以下的用C表示。
    // function xname(value) {
    //     if (value >= 90) {
    //         return 'A'
    //     } else if (60 <= value < 89) {
    //         return 'B'
    //     }else{
    //         return 'C'
    //     }
    // }
    // console.log(xname(69));

    // 一球从100米高度自由落下，每次落地后反跳回原高度的一半;再落下，求它在第10次落地时，共经过多少米?第10次反弹多高?
    // function namey(params) {
    //     let h = 100
    //     let ten = 0
    //     for (let i = 1; i <= 10; i++) {
    //         h += h / 2 / i
    //         if (i === 10) {
    //             ten = h / 2 / i
    //         }
    //     }
    //     return { h,ten}
    // }

    // console.log(namey(100));




//.猴子吃桃问题:猴子第一天摘下若干个桃子， 当即吃了一半，还不瘾，又多吃了一个第二天早.上又将剩下的桃子吃掉-一半，又多吃了一个。以后每天早上都吃了前一一天剩下的一半零一个。到第10天早上想再吃时，见只剩下一一个桃子了。求第一天共摘了多少。

// let r=1;
// for (let i = 10; i >1; --i) {
//     r= (r+1)*2
// }
// console.log(r);


// var a=1;
// for(var i=1;i<10;i++){
//     a=(a+1)*2;
// }
// console.log(a);



//两个乒乓球队进行比赛，各出三人。甲队为ab,c三人，乙队为xy;z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比，c说他不和x,z比，请编程序找出三队赛手的名单。
// var a = ['a', 'b', 'c'];
// var b = ['x', 'y', 'z'];
// var c = [];
// for (var i = 0; i < a.length; i++) {
//     for (var j = 0; j < b.length; j++) {
//         if (a[i] != b[j]) {
//             c.push(a[i] + b[j]);
//         }
//     }
//    }


// -----------------------------------------------------------------
// ：在 catch 里 reject
// 可以继续优化，在 catch 里面加一行 return Promise.reject(e), 可以使 await 中断执行；

function getUserInfo () {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('请求异常')
        }, 1000)
    })
}

async function logined () {
    let userInfo = await getUserInfo().catch(e => {
        console.warn(e)
        return Promise.reject(e) // 会导致控制台出现 uncaught (in promise) 报错信息
    })
    // 执行中断
    let pageInfo = await getPageInfo(userInfo?.userId)
}

logined()






</script>